package qx.hyj.petrescue.VO;

import qx.hyj.petrescue.constens.ErrorCode;

/**
 * 通用返回对象封装类
 * 用于封装接口返回的数据，提供统一的数据返回格式
 * @param <T> 泛型，用于封装实际返回的数据类型
 */
public class JsonResult<T> {
    // 状态码
    private String code;
    // 提示信息
    private String message;
    // 成功与否的布尔值
    private Boolean success;
    // 返回的数据
    private T data;

    /**
     * 获取状态码
     * @return 状态码字符串
     */
    public String getCode() {
        return code;
    }

    /**
     * 设置状态码
     * @param code 状态码字符串
     */
    public void setCode(String code) {
        this.code = code;
    }

    /**
     * 设置提示信息
     * @param message 提示信息字符串
     */
    public void setMessage(String message) {
        this.message = message;
    }

    /**
     * 获取提示信息
     * @return 提示信息字符串
     */
    public String getMessage() {
        return message;
    }

    /**
     * 获取成功与否的布尔值
     * @return 成功与否的布尔值
     */
    public Boolean getSuccess() {
        return success;
    }

    /**
     * 设置成功与否的布尔值
     * @param success 成功与否的布尔值
     */
    public void setSuccess(Boolean success) {
        this.success = success;
    }

    /**
     * 获取返回的数据
     * @return 返回的数据，类型为泛型T
     */
    public T getData() {
        return data;
    }

    /**
     * 设置返回的数据
     * @param data 返回的数据，类型为泛型T
     */
    public void setData(T data) {
        this.data = data;
    }

    /**
     * 无参构造函数
     * 用于创建一个空的ResultVO对象
     */
    public JsonResult() {
    }

    /**
     * 带参构造函数
     * 用于创建一个带有返回数据的ResultVO对象
     * 默认设置状态码为"200"，成功布尔值为true，提示信息为null
     * @param data 返回的数据，类型为泛型T
     */
    public JsonResult(T data) {
        this.setCode("200");//状态码
        this.setSuccess(Boolean.TRUE);//成功与否的布尔值
        this.setMessage(null);//提示信息
        this.setData(data);//返回的数据
    }
    public JsonResult(T data, ErrorCode errorCode) {
        this.setCode(errorCode.getCode());//状态码
        this.setSuccess(Boolean.FALSE);//成功与否的布尔值
        this.setMessage(errorCode.getMessage());//提示信息
        this.setData(data);//返回的数据
    }
}
